package com.chen.string.stringjoiner;

public class Test2 {
    public static void main(String[] args) {
        /*
        给定两个字符串，A和B。
        A的旋转操作就是将A最左边的字符移动到最右边。
        例如，若A='abcde'，在移动一次之后结果就是'bcdea‘
        如果在若干次调整操作之后，A能变成B，那么返回True。
        如果不能匹配成功，则返回fa1se */

        // 1.定义两个字符串
        String A = "abcde";
        String B = "cdeab";

        // 2. 调用方法进行比较
        boolean result = check(A, B);

        // 3.打印结果
        System.out.println(result);


    }

    public static boolean check(String A, String B){
        for (int i = 0; i < A.length(); i++) {
            A = rotate(A);
            if (A.equals(B)) {
                return true;
            }

        }
        // 所有的情况都比较完毕了，还不一样那么直接返回false
        return false;
    }

    // 作用：旋转字符串，把左侧的字符移动到右侧
    // 形参：旋转前的字符串
    // 返回值：旋转后的字符串
    public static String rotate(String str) {
        // 套路：
        // 如果我们看到要修改字符串的内容
        // 有两个方法
        // 1.subString进行截取，把左侧的字符串截取出来拼接到右侧
        // 2.可以把字符串先变成一个字符数组，然后对字符数组进行操作，再把字符数组变成字符串

        /*
        // 1. 截取思路
        // 获取最左侧的字符
        char first = str.charAt(0);   // 获取最左侧的字符
        // 截取剩余的字符
        String end = str.substring(1);
        return end + first;
*/
        // 2.字符数组
        char[] arr = str.toCharArray(); // "abc" -> ['a','b','c']
        // 拿上0索引上的字符
        char first = arr[0];
        // 把剩余的字符依次往前挪一个位置
        for (int i = 1; i < arr.length; i++) {
             arr[i - 1] = arr[i];

        }
        arr[arr.length-1] = first;
        // 利用字符数组创建一个字符串对象
        String result = new String(arr);
        return result;
    }
}
